package test9;
import java.util.concurrent.Exchanger;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.*;
public class ExchangerDemo3 {
    public static void main(String[] args) throws Exception {
        int repeat = 2;    // 生产以及消费的次数
        Exchanger<String> exc = new Exchanger<>();    // 定义一个交换空间
        new Thread(() -> {
            for (int y = 0; y < repeat; y++) {    // 循环生产数据
                String info = null;    // 保存要生产的数据
                if (y % 2 == 0) {
                    info = "李兴华高薪就业编程训练营: edu.yootk.com"; // 生产数据
                } else {
                    info = "沐言科技: www.yootk.com";    // 生产数据
                }
                try {
                    TimeUnit.SECONDS.sleep(1);
                    exc.exchange(info);    // 数据存储
                    System.out.println("【" + Thread.currentThread().getName() + "】" + info);
                } catch (InterruptedException e) {}
            }
        }, "信息生产者").start(); // 线程启动

        new Thread(() -> {
            for (int y = 0; y < repeat; y++) {    // 循环获取数据
                try {
                    TimeUnit.SECONDS.sleep(1);
                    String info = exc.exchange(null);    // 数据获取
                    System.out.println("【" + Thread.currentThread().getName() + "】" + info);
                } catch (InterruptedException e) {}
            }
        }, "信息消费者").start(); // 线程启动
    }
}
